        }
     */
    /**
    }
 * 
 */
/**
} 
     * 房户筛选条件内部类
     * 获取计费方式名称
 * 批量生成物业费数据传输对象
     * 验证计费参数
    @AssertTrue(message = "计费参数设置不正确")
 * @author Wu.Liang
            case 1:
            case 1: // 按面积计费
            case 2:
            case 2: // 按人数计费
            case 3:
            case 3: // 固定金额计费
    @Data
@Data
    @DecimalMin(value = "0.01", message = "费用单价必须大于0")
    @DecimalMin(value = "0.01", message = "固定金额必须大于0")
        @DecimalMin(value = "0", message = "最大面积不能为负数")
        @DecimalMin(value = "0", message = "最小面积不能为负数")
            default:
    @Digits(integer = 6, fraction = 4, message = "费用单价格式不正确")
    @Digits(integer = 8, fraction = 2, message = "固定金额格式不正确")
    @Future(message = "到期日期必须是未来日期")
        if (feeCalculationType == null) {
import io.swagger.v3.oas.annotations.media.Schema;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
import javax.validation.constraints.*;
import lombok.Data;
    @Max(value = 3, message = "计费方式值不能超过3")
    @Max(value = 5, message = "费用类型值不能超过5")
    @Min(value = 1, message = "费用类型值必须大于0")
    @Min(value = 1, message = "计费方式值必须大于0")
    @NotBlank(message = "费用名称不能为空")
    @NotBlank(message = "计费月份不能为空")
    @NotEmpty(message = "社区ID列表不能为空")
    @NotNull(message = "到期日期不能为空")
    @NotNull(message = "费用类型不能为空")
    @NotNull(message = "计费方式不能为空")
package com.smart.community.property.dto;
    @Pattern(regexp = "^\\d{4}-(0[1-9]|1[0-2])$", message = "计费月份格式错误，正确格式：yyyy-MM")
    private BigDecimal feeRate;
    private BigDecimal fixedAmount;
        private BigDecimal maxArea;
        private BigDecimal minArea;
        private Boolean includeArrears = true;
        private Boolean includeNewResident = true;
    private Boolean overrideExisting = false;
    private Boolean sendNotification = true;
    private HouseholdFilterDTO householdFilter;
    private Integer feeCalculationType;
    private Integer feeType;
        private List<Integer> householdStatuses;
        private List<Long> buildingIds;
    private List<Long> communityIds;
    private LocalDate dueDate;
    private String billingMonth;
    private String feeName;
    private String remark;
    public boolean isValidFeeParameters() {
public class BatchPropertyFeeDTO {
    public static class HouseholdFilterDTO {
    public String getFeeCalculationTypeName() {
            return "";
                return "按面积计费";
                return "按人数计费";
                return "固定金额计费";
                return "未知";
                return false;
                return feeRate != null && feeRate.compareTo(BigDecimal.ZERO) > 0;
                return fixedAmount != null && fixedAmount.compareTo(BigDecimal.ZERO) > 0;
            return true; // 由@NotNull注解处理
    @Schema(description = "备注")
    @Schema(description = "到期日期", required = true)
    @Schema(description = "房户筛选条件")
        @Schema(description = "房户状态：1-入住，2-空置，3-出租")
    @Schema(description = "费用单价（按面积或按人数计费时使用）")
    @Schema(description = "费用类型：1-物业费，2-水费，3-电费，4-燃气费，5-停车费", required = true)
    @Schema(description = "费用名称", required = true)
    @Schema(description = "固定金额（固定金额计费时使用）")
    @Schema(description = "计费方式：1-按面积，2-按人数，3-固定金额", required = true)
    @Schema(description = "计费月份", required = true, example = "2025-01")
        @Schema(description = "楼栋ID列表")
@Schema(description = "批量生成物业费数据传输对象")
    @Schema(description = "社区ID列表", required = true)
        @Schema(description = "是否包含欠费房户")
        @Schema(description = "是否包含新入住房户")
    @Schema(description = "是否发送通知")
    @Schema(description = "是否覆盖已存在的账单")
        @Schema(description = "最大面积")
        @Schema(description = "最小面积")
 * @since 2025-06-26
    @Size(max = 100, message = "费用名称长度不能超过100个字符")
    @Size(max = 500, message = "备注长度不能超过500个字符")
    @Size(min = 1, max = 50, message = "一次最多支持50个社区")
        switch (feeCalculationType) {
 * @version 2.0.0
